package com.dragon.modules.yuegou.service.coupon;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.common.web.PageRequest;
import com.dragon.modules.yuegou.entity.coupon.ParkApplyEntity;
import com.dragon.modules.yuegou.model.coupon.MerchantCoupon;
import com.dragon.modules.yuegou.model.coupon.ParkApply;
import com.dragon.modules.yuegou.model.order.Order;
import com.dragon.modules.yuegou.model.system.Document;
import com.dragon.modules.yuegou.query.coupon.ApplyCouponQuery;
import com.dragon.modules.yuegou.query.coupon.ParkApplyQuery;

/**
 * 停车券券申请表 服务接口
 *
 * @author pbuilder generated
 * @date 2019-05-30 09:30:12
 * @version 2.0
 */
public interface ParkApplyService extends IService<ParkApplyEntity> {

    /**
     * 集团版查询商户申请停车券分页列表
     * @param page
     * @param query
     * @return
     */
    IPage<ParkApply> searchApply(PageRequest page, ApplyCouponQuery query);

    /**
     * 停车券申请/审核分页查询
     * @param page
     * @param query
     * @return
     */
    IPage<ParkApply> appylist(PageRequest page, ParkApplyQuery query);

    /**
     * 停车券撤销申请
     * @param id
     */
    void cancel(String id);


    /**
     * 停车券预支付
     * @param parkApplyId
     * @param parkApplyId
     * @return
     */
    ParkApply prepaid(String parkApplyId);

    /**
     * 下单 商户下单
     * @param merchantUserId
     * @param parkApplyId
     * @return
     */
    Order order(String merchantUserId, String parkApplyId);

    /**
     * 停车券支付完成后回调
     * @return
     */
    void payCallBack(MerchantCoupon coupon, String orderNo);

    /**
     * 申请停车券
     * @param parkApply
     */
    String apply(ParkApply parkApply);

    /**
     * 提交审核
     * @param id
     */
    void submitCheck(String id);

    /**
     * 导出商户申请停车券列表
     * @param query
     * @return
     */
    Document exportApply(ApplyCouponQuery query);

    /**
     * 获取停车券审核详情
     * @param id
     * @return
     */
    ParkApply getApply(String id);

    /**
     * 审核停车券
     * @param parkApply
     */
    void checkCoupon(ParkApply parkApply);
    
	/**
	 * 给商户赠送停车券
	 * @param parkApply
	 */
	void giftCoupon(ParkApply parkApply);

}